<?php
/**
 * 商品类别模型
 *
 *
 *
 * * @好商城 (c) 2015-2018 33HAO Inc. (http://www.33hao.com)
 * @license    http://www.33 hao.c om
 * @link       交流群号：138182377
 * @since      好商城提供技术支持 授权请购买shopnc授权
 */

defined('In33hao') or exit('Access Invalid!');

class agentModel extends Model
{
    /**
     * 缓存数据
     */
    protected $cachedData;

    /**
     * 缓存数据 原H('goods_class')形式
     */
    protected $gcForCacheModel;

    public function __construct() {
        parent::__construct('agent');
    }

    /**
     * 获取缓存数据
     *
     * @return array
     * $type 0.全部 1.省代 2.市代 3.镇代
     */
    public function getCache($type=0) {
        $data = rkcache('agent');
        if (!$data) {
            $data = array();
            $row = $this->getAllList();
            if ($row) {
                foreach ($row as $v) {
                    $data[$v['type']][$v['id']] = $v;
                }
                wkcache('agent', $data);
            }
        }
        if ($type && $data) {
            return $data[$type];
        }
        return $data;
    }

    /**
     * 删除缓存数据
     */
    public function dropCache() {
        dkcache('agent');
    }

    /**
     * 类别列表
     *
     * @param  array   $condition  检索条件
     * @return array   返回二位数组
     */
    public function getAllList($condition='', $field = '*') {
        $result = $this->table('agent')->field($field)->where($condition)->order('type asc,province_id asc,city_id asc,area_id asc')->limit(false)->select();
        return $result;
    }

    /**
     * 从缓存获取分类 通过分类id找下级
     *
     * @param array $type 代理类型 1.省代 2.市代 3.镇代
     */
    public function getChildById($type,$id) {
        $data = $this->getCache();
        $ret = [];
        if ($data) {
            $parent = $data[$type][$id];
            if ($parent) {
                switch ($type) {
                    case 1 :
                        $field = 'province_id';
                        break;
                    case 2 :
                        $field = 'city_id';
                        break;
                    case 3 :
                        $field = 'area_id';
                        break;
                }
                if ($data[$type+1]) {
                    foreach ($data[$type+1] as $v) {
                        if ($v[$field] == $parent[$field]) {
                            $ret[] = $v;
                        }
                    }
                }

            }
        }
        return $ret;
    }

    /**
     * 从缓存获取分类 通过同级分类id
     *
     * @param int $id 分类id
     */
    public function getAgentById($type,$id) {
        $data = $this->getCache();
        $info = '';
        if ($data) {
            $info = $data[$type][$id];
        }
        return $info;
    }

    /**
     * 新增商品分类
     * @param array $insert
     * @return boolean
     */
    public function addAgent($insert) {
        // 删除缓存
        $this->dropCache();
        return $this->insert($insert);
    }

    public function getAgentInfo($condition = array(), $fields = '*') {
        return $this->table('agent')->where($condition)->field($fields)->find();
    }

    /**
     * 删除
     *
     * @param int $id 记录ID
     * @return bool 布尔类型的返回结果
     */
    public function del($id){
        if (intval($id) > 0){
            $where = " id = '". intval($id) ."'";
            $result = Db::delete('agent',$where);
            return $result;
        }else {
            return false;
        }
    }

    public function editAgent($condition = array(),$data) {
        // 删除缓存
        $this->dropCache();
        return $this->table('agent')->where($condition)->update($data);
    }

    public function getAgentList($condition=array(),$fields='*'){
        return $this->table('agent')->where($condition)->field($fields)->select();
    }
}
